home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Hardware / Mac OS USB DDK / Mac OS USB DDK 1.4.1 / Examples / CompositeClassDriver / CompositeClassDriver.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-25  |  2.4 KB  |  90 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        CompositeClassDriver.h
  3.  
  4.     Contains:    Header file for Composite Class Driver 
  5.  
  6.     Version:    xxx put version here xxx
  7.  
  8.     Copyright:    © 1997-1999 by Apple Computer, Inc., all rights reserved.
  9.  
  10. */
  11. #ifndef __CompositeCLASSDRIVERH__
  12. #define __CompositeCLASSDRIVERH__
  13.  
  14. #include <Types.h>
  15. #include <Devices.h>
  16. #include <DriverServices.h>
  17. #include <Processes.h>
  18. #include <USB.h>
  19.  
  20. #define     kCompositeDriverName    "\pUSBCompositeDriver"
  21.  
  22. Boolean        immediateError(OSStatus err);
  23. void        CompositeDeviceInitiateTransaction(USBPB *pb);
  24. void        CompositeDeviceCompletionProc(USBPB *pb);
  25. void         InitParamBlock(USBDeviceRef theDeviceRef, USBPB * paramblock);
  26.  
  27. OSStatus    CompositeDriverInitInterface(UInt32 interfaceNum, USBInterfaceDescriptor *interfaceDesc, USBDeviceDescriptor *deviceDesc, USBDeviceRef device);
  28. OSStatus    CompositeDriverNotifyProc(UInt32 notification, void *pointer, UInt32 refcon);
  29. OSStatus    CompositeDriverValidateHW(USBDeviceRef device, USBDeviceDescriptor *desc);
  30. OSStatus    CompositeDriverInitialize(USBDeviceRef device, USBDeviceDescriptorPtr pDesc, UInt32 busPowerAvailable);
  31. OSStatus    CompositeDriverFinalize(USBDeviceRef theDeviceRef, USBDeviceDescriptorPtr pDesc);
  32.  
  33. void        DeviceInitialize(USBDeviceRef device, USBDeviceDescriptorPtr pDeviceDescriptor, UInt32 busPowerAvailable);
  34.  
  35. OSErr        GetInterfaceDescriptor(LogicalAddress pConfigDesc, UInt32 ReqInterface, USBInterfaceDescriptorPtr *hInterfaceDesc);
  36.  
  37. #define     kCompositeRetryCount    5
  38.  
  39. enum driverstates
  40. {
  41.     kUndefined = 0,
  42.     kResetDevice,
  43.     kGetAConfiguration,
  44.     kSetConfig,
  45.     kAllocInterfaces,
  46.     kGetConfigDesc,
  47.     kSetRemoteWakeup,
  48.     kNewInterfaceRef,
  49.     kGetInterfaceDesc,
  50.     kFindNextInterface,
  51.     kReturnFromDriver =     0x1000,
  52.     kRetryTransaction =     0x2000,
  53.     kSyncTransaction =         0x4000,
  54.     kCompletionPending =     0x8000
  55. };
  56.  
  57. typedef struct{
  58.     USBInterfaceRef ref;
  59.     USBInterfaceDescriptor desc;
  60.     }interface;
  61.  
  62. typedef struct
  63. {
  64.     USBPB                             pb;
  65.     void (*handler)(USBPB             *pb);
  66.  
  67.     USBDeviceRef                    deviceRef;
  68.     
  69.     Boolean                            driverRemovalPending;
  70.     Boolean                            expertTerminatePending;        // TCC <USB9>
  71.     
  72.     UInt16                            currentConfiguration;
  73.     UInt16                            currentInterface;
  74.     
  75.     interface                        *interfaces;
  76.     USBRqIndex                        interfaceCount;
  77.     USBRqIndex                        interfaceIndex;
  78.     
  79.     SInt32                             retryCount;
  80.     SInt32                            delayLevel;
  81.     SInt32                            transDepth;
  82.     UInt32                            busPowerAvailable;
  83.     
  84.     USBConfigurationDescriptor        configDescriptor;
  85.     USBDeviceDescriptor             deviceDescriptor;
  86.     
  87.     Boolean                            interfacesRead;
  88. } usbCompositePBStruct;
  89.  
  90. #endif //__CompositeCLASSDRIVERH__